package br.com.six2six.fixturefactory.transformer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.OffsetTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.TimeZone;
import javax.xml.datatype.DatatypeConfigurationException;
import org.junit.Test;
public class DateTimeTransformerTest {
@Test
public void transformCalendarToLocalDateTime() {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
LocalDateTime date = value.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
LocalDateTime transform = new DateTimeTransformer().transform(value, LocalDateTime.class);
assertNotNull("LocalDateTime should not be null", transform);
assertEquals("LocalDateTimes should be equal", date, transform);
}
@Test
public void transformCalendarToLocalDate() throws DatatypeConfigurationException {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
LocalDate date = value.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate transform = new DateTimeTransformer().transform(value, LocalDate.class);
assertNotNull("LocalDate should not be null", transform);
assertEquals("LocalDates should be equal", date, transform);
}
@Test
public void transformCalendarToLocalTime() {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
LocalTime time = value.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();
LocalTime transform = new DateTimeTransformer().transform(value, LocalTime.class);
assertNotNull("LocalTime should not be null", transform);
assertEquals("LocalTimes should be equal", time, transform);
}
@Test
public void transformCalendarToOffsetDateTime() {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
OffsetDateTime offsetDateTime = value.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime();
OffsetDateTime transform = new DateTimeTransformer().transform(value, OffsetDateTime.class);
assertNotNull("OffsetDateTime should not be null", transform);
assertEquals("OffsetDateTimes should be equal", offsetDateTime, transform);
}
@Test
public void transformCalendarToOffsetTime() {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
OffsetTime offsetTime = value.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime().toOffsetTime();
OffsetTime transform = new DateTimeTransformer().transform(value, OffsetTime.class);
assertNotNull("OffsetTime should not be null", transform);
assertEquals("OffsetTimes should be equal", offsetTime, transform);
}
@Test
public void transformCalendarToZonedDateTime() {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
ZonedDateTime zonedDateTime = value.toInstant().atZone(ZoneId.systemDefault());
ZonedDateTime transform = new DateTimeTransformer().transform(value, ZonedDateTime.class);
assertNotNull("ZonedDateTime should not be null", transform);
assertEquals("ZonedDateTimes should be equal", zonedDateTime, transform);
}
@Test
public void transformCalendarToInstant() {
Calendar value = Calendar.getInstance(TimeZone.getDefault());
Instant instant = value.toInstant();
Instant transform = new DateTimeTransformer().transform(value, Instant.class);
assertNotNull("Instant should not be null", transform);
assertEquals("Instants should be equal", instant, transform);
}
@Test
public void transformNull() {
assertNull(new DateTimeTransformer().transform(null, LocalDateTime.class));
}
@Test(expected=IllegalArgumentException.class)
public void transformInvalidType() {
new DateTimeTransformer().transform(Calendar.getInstance(), Character.class);
}
}